const BASE_URL = 'https://park.lmtc.zmzncs.com/ylpay/'

// 同时发送异步代码的次数，防止一次点击中有多次请求，用于处理
let ajaxTimes=0;

// 通过export向外暴露一个方法，方法名叫myRequest,调用myRequest方法时会向方法中传递一个对象options
export const myRequest = (options)=>{ 
	
	let header = {
		'phoneNumber': wx.getStorageSync('phoneNumber') || '',
		'token': wx.getStorageSync('token') || '',
		'userId': wx.getStorageSync('userId') || '',
		'openId': wx.getStorageSync('openId') || '',
	};
	
	header = JSON.stringify(header)  //转json字符串不转后端解析不了
	
	ajaxTimes++;   // 显示加载中 效果
	
	wx.showLoading({
		title: "加载中",
		mask: true,
	});
	return new Promise((resolve,reject)=>{  // 异步处理的封装通过promise比较好，并且要return出去，
		wx.request({  // 在回调函数中处理异步请求
            url: BASE_URL + options.url,  // 将接口地址分为两部分，这样如果域名改变了好维护，接口地址从options中获取
			method: options.method || 'POST', // 方法从options中获取，如果没有传入method，则默认为POST，
			header: {
				'content-type': 'application/json',
				// '' 考虑到登录API没有token。
				'token': wx.getStorageSync('token') || '',
				header
			},
            data: options.data || {},  // data从options中获取，如果没有传入data， 则默认一个空对象
            success: (res) => {  	
				// 用箭头函数，res是返回来的数据
                if(res.data.retCode !== '0000'){  // 如果请求失败，则给一个提示
                    return wx.showToast({
                        title: '获取数据失败！',
						icon:"error"
                    })
                }
                resolve(res)  //如果请求成功，调用resolve返回数据
            },
            fail: (err)=>{ 
				// err 是返回来的错误信息
                wx.showToast({  
                    title: '请求接口失败！',  // 给一个消息提示
                    icon:'none'
                })
                reject(err) // 调用reject方法把错误消息返回出去
            },
			complete:()=>{
				ajaxTimes--;
				if(ajaxTimes===0){
					//  关闭正在等待的图标
					wx.hideLoading();
				}
			}
            
        })
    })
	
}